Data storage systems, such as disk storage arrays, are called upon to store and manage increasingly larger amounts of data, e.g., in gigabytes, terabytes, petabytes, and beyond. As a result, it is increasingly common or necessary that this large amount of data be distributed across multiple hard disk drives or other storage entities. Some conventional systems treat the collection of storage devices as a unified pool of data storage space that is divided into equal sized portions or slices, where a slice may be as small as a single sector on a hard disk (e.g., 512 bytes) or as large as an entire hard disk drive, or even multiple hard disk drives.
One or more portions may be organized into collections called logical units. This process is referred to as allocating a slice to a logical unit. Once a slice has been allocated to a logical unit, that slice is exclusively used by the logical unit. Slices that have not been organized into or associated with a logical unit are referred to as unallocated slices. A logical unit can be a subset of a single storage device, e.g., a hard disk drive may contain multiple logical units; a logical unit can be an entire storage device; and a logical unit can span multiple storage devices, e.g., a logical unit may be distributed across multiple storage devices organized into a redundant array of inexpensive disks (RAID) array.
In some conventional systems, a storage administrator may be required to fully allocate an LU at creation time. That is, a storage administrator may request an LU consisting of a specified size and a storage system may allocate slices to meet the specified size. Recognizing that more storage space may be allocated than may actually be used at first, the concept of a sparsely populated or “thin” logical unit (TLU) was developed. Unlike the more traditional “fat” or fully allocated logical unit (FLU), which is created by provisioning and allocating a certain amount of storage area, a TLU is provisioned at creation but is not allocated any physical storage until the storage is actually needed.
Recently, a new type of LU has been contemplated which combines features of both FLUs and TLUs, known as a Direct LU (DLU). In one example, a DLU may be seen as fully provisioned by a user with a specified size, yet the specified size may in fact represent reserved storage space. To ensure that space reservations can be honored and that storage space in a pool is not overbooked, it is important to track pool storage space reservations. For example, a storage system may maintain the amount of reserved storage space needed for each DLU or other LU with reserved storage space and the amount of available or unreserved storage space for determining whether further reservations may be made.
Accordingly, there exists a need for systems, methods, and computer readable media for tracking pool storage space reservations.